package util.designpattern.dependenceinversionprinciple20200619;

import javax.swing.*;

/**
 * 依赖倒置原则(依赖注入)
 * 在设计代码时：高层模块不应该依赖底层模块，二者都应该依赖其抽象。
 *                         抽象不应该依赖细节，细节应该依赖抽象
 * 用过依赖倒置，可以减少类与类之间的耦合性，提高系统的稳定性，提高代码的可读性和可维护性。
 * 注：以抽象为基准比以细节为基准搭建起来的架构要稳定的多，因此在拿到需求之后，要面向接口编程，先顶层
 * 再细节地设计代码结构。
 */
public class Smile {

        private ICourse iCourse;
//    public void studyJavaCource(){
//        System.out.println("smile正在学习java课程");
//    }
//    public void studyPythonCourse(){
//        System.out.println("smaile正在学习python课程");
//    }
    public void study(ICourse iCourse){
        iCourse.study();
    }

    public  Smile(ICourse iCourse){
        this.iCourse = iCourse;
    }
}
